#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<algorithm>
#include<queue>
#include<iostream>
using namespace std;


const int N = 50005;
int n;
double x[N], r[N];
pair<double, double> arr[N];
const double eps = 1e-6;
const double inf = 1e8;
const int IT = 100;


int main()
{
	while(1)
	{
		scanf("%d", &n);
		if(!n) 
			return 0;
		for(int i = 0; i < n; ++i)
			scanf("%lf%lf", &x[i], &r[i]);

		double lh = 0, rh = 1e5+5, h;
		for(int it = 0; it < IT; ++it)
		{
			h = (lh + rh) / 2;

			// !!!
			//h = 6.5;

			for(int i = 0; i < n; ++i)
			{
				if(h > r[i])
					arr[i] = make_pair(1, 0);
				else
				{
					double d = sqrt(r[i]*r[i] - h*h);
					arr[i] = make_pair(x[i]-d, x[i]+d);
				}
			}

			double mx = 0, cur = -inf;
			for(int i = 0; i < n; ++i)
			{
				if(!i || arr[i-1].first > arr[i-1].second)
					cur = -inf;
				if(arr[i].first > arr[i].second)
					continue;
				if(cur < -1e7 || arr[i-1].second < arr[i].first) 
					cur = arr[i].first;
				mx = max(mx, arr[i].second - cur);
			}

			if(mx > h + h - eps)
				lh = h;
			else
				rh = h;
		}

		printf("%.8lf\n", h+h);
	
	}
	return 0;
}
